Data storage systems are arrangements of hardware and software that include storage processors coupled to arrays of non-volatile storage devices. In typical operation, storage processors service storage requests that arrive from client machines. The storage requests specify data objects (e.g., file systems, LUNs, vVols, and the like) to be accessed, overwritten, created, or deleted, for example. The storage processors run software that manages incoming storage requests and performs various data processing tasks to organize and secure the data stored on the non-volatile storage devices.
In a file system, data may be written to a file. For example, a storage processor writes data from an application specifying a range of logical addresses within a file. Conventional approaches to allocating storage space to accommodate new data involves identifying a free block in the file system and allocating sequential physical addresses from the free block forward. Allocating sequential physical addresses of the file system to store data for sequential logical addresses of the file helps to reduce fragmentation.